Virtual machine disk image installation

ABSTRACT

A processor copies first and second installable binary files into first and second disk images of first and second virtual machines, respectively, before instantiating the images. The processor can copy first installation parameters and second installation parameters into the first image. The processor copies additional first installation parameters and additional second installation parameters into the second image. The processor at least partially executes a first installation process, based on the first installation parameters, to install the first installable binary files, and a second installation process, based on the additional second installation parameters, to install the second installable binary files. The processor at least partially executes the installation processes in an interleaved manner in relation to one another, based on dependencies. After instantiating the images, the processor can execute scripts based on the second installation parameters and the additional second installation parameters to complete installation.

BACKGROUND

A computing device typically runs one instance of an operating systemthat has access to the hardware resources of the computing device.However, a technique known as virtualization permits a computing deviceto run a number of instances of operating systems. In virtualization,the computing device instantiates a number of such virtual machines, andeach virtual machine runs its own instance of an operating system.

SUMMARY

A method of an embodiment of the disclosure includes a processor copyingone or more installable binary files for one or more software componentsinto a disk image of a virtual machine, prior to instantiating the diskimage of the virtual machine, such that the virtual machine is notrunning. The method includes the processor copying one or moreinstallation parameters into the disk image of the virtual machine. Theinstallation parameters are for an installation process to install theinstallable binary files within the disk image of the virtual machine.The method includes the processor at least partially executing theinstallation process, based on the installation parameters, to installthe installable binary files within the disk image of the virtualmachine, without instantiating the disk image of the virtual machine.The method includes the processor instantiating the disk image of thevirtual machine, such that the virtual machine is running.

A computer program product of an embodiment of the disclosure includes acomputer-readable storage medium having computer-readable code embodiedtherein. A processor executes the computer-readable code to install oneor more first software components of a first disk image of a firstvirtual machine and to install one or more second software components ofa second disk image of a second virtual machine. The computer-readablecode includes first computer-readable code to permit creation of atopology model of the first software components and of the secondsoftware components. The topology model includes dependencies betweenthe first software components and the second software components.

The computer-readable code includes second computer-readable code togenerate an ordered sequence of installation operations based on thedependencies between the first software components and the secondsoftware components. The computer-readable code includes thirdcomputer-readable code to at least partially install the first diskimage of the first virtual machine and the second disk image of thesecond virtual machine in an interleaved manner, by executing at leastsome of the installation operations in the ordered sequence. Such atleast partial installation occurs without instantiating the first diskimage of the first virtual machine and without instantiating the seconddisk image of the second virtual machine.

A computer program product of another embodiment of the disclosureincludes a computer-readable storage medium having computer-readablecode embodied therein. A processor executes the computer-readable codeto install a disk image of a virtual machine. The computer-readable codeincludes first computer-readable code to perform an offline installationprocess of the disk image of the virtual machine in which a first partof installation of the disk image of the virtual machine occurs withoutinstantiating the disk image of the virtual machine, such that thevirtual machine is not running. The computer-readable code includessecond computer-readable code to perform an online installation processof the disk image of the virtual machine in which a remaining part ofthe installation of the disk image of the virtual machine occurs uponinstantiating the disk image of the virtual machine.

A system of an embodiment of the disclosure includes a processor, acomputer-readable data storage medium, and an installation engine. Thecomputer-readable data storage medium stores a disk image of a virtualmachine. At least the processor implements the installation engine. Theinstallation engine copies one or more installable binary files into thedisk image, copies one or more installation parameters into the diskimage, and at least partially executes an installation process based onthe installation parameters to install the installable binary fileswithin the disk image, without instantiating the disk image.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

The drawings referenced herein form a part of the specification.Features shown in the drawing illustrate only some embodiments of thedisclosure, and not of all embodiments of the disclosure, unless thedetailed description explicitly indicates otherwise, and readers of thespecification should not make implications to the contrary.

FIG. 1 is a flowchart of a method for installing software componentsinto a disk image of a virtual machine, according to an embodiment ofthe disclosure.

FIG. 2 is a flowchart of a method for installing software componentsinto a disk image of a virtual machine, according to another embodimentof the disclosure.

FIG. 3 is a flowchart of a method for installing software componentsinto multiple disk images of multiple virtual machines, according to anembodiment of the disclosure.

FIG. 4 is a flowchart of a method for installation software componentsinto multiple disk images of multiple virtual machines, according toanother embodiment of the disclosure.

FIG. 5 is a diagram of an example topology model, according to anembodiment of the disclosure.

FIG. 6 is a diagram of a system, according to an embodiment of thedisclosure.

DETAILED DESCRIPTION

The following detailed description of exemplary embodiments of thedisclosure refers to the accompanying drawings that form a part of thedescription. The drawings illustrate specific exemplary embodiments inwhich the disclosure may be practiced. The detailed description,including the drawings, describes these embodiments in sufficient detailto enable those skilled in the art to practice the disclosure. Thoseskilled in the art may further utilize other embodiments of thedisclosure, and make logical, mechanical, and other changes withoutdeparting from the spirit or scope of the disclosure. Readers of thefollowing detailed description should, therefore, not interpret thedescription in a limiting sense, and only the appended claims define thescope of the embodiment of the disclosure.

As noted in the background section, virtual machines permit the samehardware of a computing device to run multiple operating systeminstances, in accordance with a technique known as virtualization. Anentity like a corporation may deploy thousands of virtual machines, ifnot more. The deployment process typically involves having a disk imageof a virtual machine, and copying this disk image onto a computingdevice on which the process deploys the virtual machine.

The deployment process then instantiates the disk image of the virtualmachine on this computing device. Instantiating the disk image of thevirtual machine involves tying the virtual machine to the computingdevice in question, and starting the virtual machine. Afterinstantiating the virtual machine, resulting in the virtual machinerunning, the deployment process installs software components other thanthe operating system on the virtual machine, completing the process.

This process is laborious, however, when administrators or other usershave to deploy thousands or more of virtual machines. The deploymentprocess requires copying the disk image for a virtual machine to eachcomputing device on which the process then instantiates the image. Moresignificantly, the deployment process requires instantiating the diskimage at each computing device so that the virtual machine runs on eachsuch computing device, prior to installing additional softwarecomponents on the virtual machine. While administration tools exist toassist in installing such additional software components, theynevertheless require a currently running virtual machine prior toinstalling the software components on the virtual machine. That is, theadministration tools cannot simply install the software components onthe disk image of the virtual machine prior to instantiating the virtualmachine.

Furthermore, the software components installed over multiple virtualmachines, in a discrete or distributed fashion, may have intertwinedinstallations. For instance, the deployment process may have topartially install a first software component within a first virtualmachine, and then partially install a second software component within asecond virtual machine before the process can complete installation ofthe first software component within the first virtual machine. Suchinterdependent software component installation is typically manuallyintensive.

Embodiments of the disclosure provide for techniques that overcome thesedisadvantages. An embodiment of the disclosure copies the installablebinary files for the software components into a disk image of a virtualmachine, before instantiating the disk image and thus when the virtualmachine is not running. The embodiment further copies into the diskimage the installation parameters for the installation process toinstall the installable binary files within the disk image.

The installation parameters can include first installation parametersthat the installation process can populate with values prior toinstantiating the disk image of the virtual machine, as well as secondinstallation parameters that the installation process cannot populateuntil the process has instantiated the disk image. If just firstinstallation parameters are present, then the embodiment of thedisclosure completely executes the installation process, based on thesefirst installation parameters, to completely install the installablebinary files within the disk image, without first instantiating the diskimage of the virtual machine. The embodiment can then instantiate thedisk image, such that the virtual machine runs with the installationprocess having preinstalled all the desired software components.

If second installation parameters also exist, however, then theembodiment of the disclosure partially executes the installation processto install the installable binary files as much as possible withoutfirst instantiating the disk image. Once the embodiment has instantiatedthe disk image, the embodiment executes previously copied scripts fromthe disk image, based on the second installation parameters that nowhave populated values, to complete the installation process of thedesired software components. This embodiment, then, installs thesoftware components without instantiating the disk image to the extentpossible, and after the embodiment has instantiated the disk image, theembodiment completes installation of the software components.

As noted above, there may further be two disk images: a first disk imageof a first virtual machine, and a second disk image of a second virtualmachine. Such an embodiment of the disclosure can perform aninstallation process of the installable files for the first disk imagein an interleaved manner in relation to an installation process of theinstallable files for the second disk image. This embodiment modelsdependencies between the software components for the first disk imageand the software components for the second disk image, and modelsinstallation operations in the installation processes for the diskimages to generate an ordered sequence of these operations based on thedependencies. As such, the embodiment ultimately properly installs theinstallable files for the first and second disk images in theirrespective disk images, in a manner that is at least substantially ifnot fully automated.

A disk image of a virtual machine, as this term is used herein, is asingle file that contains the complete contents and directory structurerepresenting a virtual data storage medium or device of the virtualmachine. For example, a virtual machine may instantiate a particularoperating system. An embodiment of the disclosure does not start up thevirtual machine with no installed operating system and then install theoperating system on the virtual machine in a manner akin to installingthe operating system on a physical machine or computing device. Rather,a disk image of the virtual machine includes the files and structure ofthe operating system as if the embodiment had installed the operatingsystem in this manner. As such, this embodiment simply instantiates thedisk image on a physical machine or computing device, so that theembodiment can start up the virtual machine with the operating systemeffectively preinstalled.

FIG. 1 shows a method 100 for installing software components other thanthe operating system into a disk image of a virtual machine, accordingto an embodiment of the disclosure. The method 100 relates to the caseof one disk image of one virtual machine. The method 100 furtherspecifically relates to the case in which the installable binary filesof the software components do not require any installation parametersthat are unknown until the method 100 has instantiated the disk image.As such, the method 100 provides for installation of the softwarecomponents completely prior to instantiating the disk image of thevirtual machine. A processor of a computing device, such as a desktop orlaptop computer, among other types of computing devices, can perform themethod 100.

The processor can mount the disk image of the virtual machine into ahost computing device (102). The disk image of the virtual machinealready includes the files for the operating system of which the virtualmachine is an instance, as if the processor had started the virtualmachine without an operating system and thereafter had subsequentlyinstalled an operating system on the virtual machine. That is, thevirtual machine of the disk image includes a preinstalled operatingsystem. The host computing device is a computing device under control ofa user who is responsible for deploying instances of the disk image ontovarious other computing devices.

Commands such as chroot, which are available on the UNIX® operatingsystem as well as other operating systems, can make the mount point of adisk image appear as the root directory of the host computing device.This permits execution of installation operations on the host computingdevice rather than on the virtual machine instantiated from the diskimage. UNIX® is a registered trademark of The Open Group, of SanFrancisco, Calif.

The processor can receive the installable binary files and installationparameters to install these files within the disk image (103). Forinstance, a topology model can specify the installable binary filesand/or the installation parameters, as described in more detail below.The installation process may further specify the installable binaryfiles that the processor performs to unpack the actual filesrepresenting the software components, and to install these files inappropriate directories or folders of the disk image. The installablebinary files may include “setup” files for computer programs (i.e., thesoftware components in question).

More generally, an installable binary file is a binary file in that itis a computer-readable file that contains any type of data, encoded inbinary form for computer storage and/or processing purposes. Aninstallable binary file is an installable file in that it is acomputer-readable file that the processor uses to install and/or forinstalling a corresponding software component. An installable binaryfile may thus represent or include the executable code of a softwarecomponent, and/or data that the executable code requires in order to runproperly.

The installation parameters are those that the processor can know andpopulate with values prior to the processor instantiating the diskimage. For example, when the processor performs the installationprocess, there may be some options as to how the processor is to installthe software components. The installation parameters may specify theseoptions. The installation parameters may also include configurationparameters for related software components. For example, theinstallation parameters for a client software component may include thehostname for a server software component.

The processor copies into the disk image mounted on the host computingdevice the installable binary files for the software components that theprocessor is to install within the disk image of the virtual machine,prior to the processor instantiating the disk image (104). Likewise, theprocessor copies the installation parameters for the installationprocess into the disk image of the virtual machine, prior instantiatingthe disk image (106). By copying the installation parameters into thedisk image, and by populating them with values, the processor canperform the installation process in an unattended manner, without userassistance.

The processor then executes the installation process, based on theinstallation parameters, at the host computing device to install theinstallable binary files within the disk image, without instantiatingthe disk image (108). As such, the processor installs the softwarecomponents within the disk image of the virtual machine, even though theprocessor has not yet instantiated the disk image such that the virtualmachine is not currently running. Stated another way, the disk image nowincludes the software components that the processor has installed withinthe virtual machine of the disk image, even though the processor has notyet run the virtual machine because the processor has not yetinstantiated the disk image.

The processor can dismount the disk image from the host computingdevice, and copy the disk image to one or more desired computing devicesat which the processor is to instantiate the disk image (110). Theprocessor then instantiates the disk image at each such computing device(112). As such, the virtual machine—including the software componentsthat the processor had installed on the disk image prior instantiatingthe virtual machine—is now running. The processor does not perform anypart of the installation process once the processor has instantiated thedisk image of the virtual machine.

Examples of software components that the processor can install includesoftware components that are part of and/or that are interoperable withEclipse™ software. Eclipse™ is a trademark of Eclipse Foundation, Inc.,of Ottawa, Canada. Examples of installation parameters that theprocessor copies into the disk image in part 106 include, in addition tothose mentioned above, the installation directories of softwarecomponents.

FIG. 2 shows a method 200 for installing software components other thanthe operating system into a disk image of a virtual machine, accordingto another embodiment of the embodiment. A processor of a computingdevice can perform the method 200. The method 200, like the method 100,specifically relates to the case of one disk image of one virtualmachine. However, the method 200 further specifically relates to thecase in which the installable binary files of the software componentsrequire some installation parameters that are unknown and that theprocessor cannot populate with values until the processor hasinstantiated the disk image. The processor can install the softwarecomponents in the method 200 to the extent possible prior toinstantiating the disk image of the virtual machine, and then finalizethe installation after the processor has instantiated the disk image.

The processor can mount the disk image of the virtual machine into ahost computing device (202), as before. The processor can also receiveinstallable binary files, as well as first and second installationparameters to install these files within the disk image, and scripts(203). A topology model can specify the installation parameters andscripts, as before. The processor again copies the installable binaryfiles for the software components that the processor is to installwithin the disk image of the virtual machine, into the disk imagemounted on the host computing device, prior to instantiating the diskimage (204), also as before. The processor copies into the disk imagethe first and second installation parameters for an installation processthat the processor performs to install the installable binary files intothe disk image of the virtual machine prior to instantiating the diskimage (206). The processor likewise copies the scripts into the diskimage (208).

The first installation parameters are similar to those described inrelation to part 106 above. That is, the first installation parametersare those that the processor can know and populate with values priorinstantiating of the disk image. This type of installation parameter isan offline installation parameter, because the parameter is known beforethe processor has instantiated the disk image and thus when the diskimage is offline. By comparison, the second installation parameters arethose that are unknown and that the processor cannot populate withvalues prior to instantiating the disk image of the virtual machine, butrather that the processor can only know and populate with values afterinstantiating the disk image such that the virtual machine is running.This type of installation parameter is as an online installationparameter, because the parameter is unknown before the processor hasinstantiated the disk image. The processor only populates the parameterwith values after having instantiated the disk image and thus when thedisk image is online.

For example, a software component may require the network addressassigned to the virtual machine, such as an Internet Protocol (IP)address. The processor may not know this network address until theprocessor has booted the virtual machine and the virtual machine isrunning. Therefore, the network address of the virtual machine is asecond installation parameter, and not a first installation parameter.The processor thus cannot perform or execute the portion of theinstallation process of the corresponding installable binary files untilthe processor has instantiated the disk image of the virtual machine.

The scripts correspond to the parts of the installation process that theprocessor performs after instantiating the disk image such that thevirtual machine is running. For instance, once the processor has bootedthe virtual machine, the processor executes the scripts to complete theinstallation process that the processor could not complete prior toinstantiating the disk image, due to the presence of the secondinstallation parameters. The processor can copy the scripts so that thevirtual machine automatically executes them the first time the processorboots the virtual machine after the processor has instantiated diskimage.

Examples of such types of scripts include activation scripts written inthe Java® command language (JACL) to reconfigure a hostname within aWebSphere® application server installation. Java® is a registeredtrademark of Oracle Corp., of Redwood Shores, Calif. WebSphere® is aregistered trademark of International Business Machines Corp., ofArmonk, N.Y.

The processor first partially executes the installation process, basedon the first installation parameters, without instantiating the diskimage (210), similar to in part 108 of the method 100. The differencebetween part 108 and part 210 is that in part 108, the processorcompletely installs the installable binary files, and thus the softwarecomponents, as a result of the processor completely performing theinstallation process. By comparison, in part 210 the processor justpartially installs the installable binary files, and thus the softwarecomponents, as a result of the processor partially performing theinstallation process.

The processor cannot completely perform the installation process in part210, due to the presence of the second installation parameters. Becausethe second installation parameters are unknown and the processor cannotpopulate them with values prior to instantiating the disk image, theprocessor cannot perform a portion of the installation process until theprocessor has instantiated the disk image. Therefore, in part 210,desirably the processor performs the installation process to install theinstallable binary files as much as possible without having toinstantiate the disk image and run the virtual machine.

The processor can dismount the disk image from the host computing deviceand copy the disk image to one or more desired computing devices (212),as in part 110. The processor then instantiates the disk image at eachsuch computing device (214), as in part 112. As such, the virtualmachine is now running. However, unlike in the method 100, the softwarecomponents are not yet running, because the processor did not completelyperform the installation process in part 210.

Rather, once the processor has booted the virtual machine, the processorexecutes the scripts that the processor previously copied to the diskimage, based on the second installation parameters, to complete theinstallation process (216). Running the virtual machine results in thesecond installation parameters taking on values. Therefore, theprocessor can complete the installation process, because the secondinstallation parameters are now known and thus the processor canpopulate them with values. Desirably, in part 216 the processor performsjust the remaining part of the installation process that the processorcannot complete without having instantiated the disk image.

The processor performs the two parts 210 and 216 of the installationprocess a different number of times. Consider an example in which theprocessor is to instantiate a disk image of a virtual machine on tendifferent computing devices. The processor performs part 210 only once,even though the processor will instantiate the disk image ten times inthis example. This is because the processor performs part 210 beforeinstantiating the disk image. By comparison, the processor performs part216 ten times in this example, once at each computing device. This isbecause the processor performs part 216 after instantiating the diskimage.

At least some parts of the method 200 prior to part 214 are offlineparts of the installation process of the installable binary files ofsoftware components. That is, these parts of the method 200 constitutean offline installation process. This is because the processor performsthese parts before instantiating the disk image of the virtual machine,and thus when the virtual machine is not running and is offline. Bycomparison, part 216 is an online part of the installation process,because the processor performs part 216 after instantiating the diskimage, and thus when the virtual machine is running and is online. Thatis, part 216 constitutes an online installation process.

FIG. 3 shows a method 300 for installing software components other thanoperating systems into disk images of virtual machines, according toanother embodiment of the disclosure. A processor of a computing devicecan perform the method 300. The method 300 specifically relates to thecase of two disk images of two virtual machines: a first disk image of afirst virtual machine, and a second disk image of a second virtualmachine. Those skilled within the art, however, can easily extend themethod 300 to more than two disk images of two virtual machines,however.

Furthermore, the method 300 specifically relates to the case in whichthe installable binary files of the software components do not requireany installation parameters that are unknown and that the processorcannot populate with values until the processor has instantiated thedisk images, as in the method 100. By comparison, another embodiment ofthe disclosure, which the detailed description describes later withreference to a different figure, relates to the case in which theinstallable binary files of the software components require someinstallation parameters that are unknown and that a method cannotpopulate with values until the first disk image and/or the second diskimage has been instantiated. Thus, the method 300 provides for completeinstallation of the software components prior to instantiating the diskimages of the virtual machines.

The processor can mount the first disk image of the first virtualmachine and the second disk image of the second virtual machine into ahost computing device (302). The processor copies into the first diskimage the first installable binary files for first software componentsthat the processor is to install within the first disk image, prior toinstantiation of the first disk image (304). Likewise, the processorcopies into the second disk image the second installable binary filesfor second software components that the processor is to install withinthe second disk image, prior to instantiation of the second disk image(304). Similarly, the processor copies into the first disk image firstinstallation parameters for a first installation process that theprocessor is to perform to install the first installable binary files(306). Likewise, the processor copies into the second disk image secondinstallation parameters for a second installation process that theprocessor is to perform to install the second installable binary files(306).

The first installation parameters are those that the processor can knowand populated with values prior to instantiating the first disk image.Likewise, the second installation parameters are those that theprocessor can know and populate with values prior to instantiating thesecond disk image. As noted above, in the specific case of FIG. 3, thereare no installation parameters for either disk image that are unknownand that the processor cannot populate with values until the processorhas instantiated the disk image in question. However, those skilled inthe art can extend the method 300 to include such installationparameters, per the method 200 described above.

The processor creates a topology model of the first and second softwarecomponents (308). The first installable binary files correspond to thefirst software components, and the second installable binary filescorrespond to the second software components. The topology model has astructure reflecting which installable binary files correspond to whichsoftware components, and which software components the processor is toinstall within each disk image. The topology model also includes theinstallation parameters for the installable binary files. The firstinstallation parameters for the first software components may includesome of the second installation parameters for the second softwarecomponents. That is, the first and second software components may sharesome of the installation parameters, such that these installationparameters are both first installation parameters for the first softwarecomponents and second installation parameters for the second softwarecomponents.

As an example, a software component may have more than one installablebinary file, such that the processor creates or generates a containmentrelationship to indicate that the installable binary files in questionbelong to the software component (i.e., the software component containsthese installable binary files). Another example is that one softwarecomponent can include another software component. For example, aWebSphere® application server middleware company can include a Java®enterprise edition application component.

A user, such as the user responsible for deploying the disk images, maycreate the topology model by using a graphical user interface (GUI) thatthe processor provides. The GUI can provide the user with the ability tocreate or otherwise select disk images, and to create or otherwiseselect and then map software components to the disk images. The GUI mayalso provide the user with the ability to map installable binary filesto the software components to indicate their containment relationships,and specify the installation parameters for the software components.

The processor models dependencies between the first and second softwarecomponents within the topology model as well (310). The dependenciestypically indicate relationships among distributed software components,such as client-server and peer-to-peer relationships. The processor canuse the dependencies to infer the order in which the processor is toinstall the first software components in relation to one another, aswell as the order in which the processor is to install the secondsoftware components in relation to one another. The processor canfurther use the dependencies to infer the order in which the processoris to install the first software components are in relation to thesecond software components, and vice-versa. The processor can also usethe dependencies to infer which of the installation parameters are bothfirst installation parameters and second installation parameters. Thatis, the processor can use the dependencies to infer which of the secondinstallation parameters are first installation parameters, too, andvice-versa.

For example, consider the following scenario. The first disk image isfor a first virtual machine that runs a database application. The seconddisk image is for a second virtual machine that runs a database client.For the application and the client to work together, the client needs toknow the identity of the application, and the application needs to knowthe identity of the client. The detailed description later presentsanother scenario, described with reference to a figure.

The application and the client may have dependencies as follows in thisexample scenario. The processor may first install the databaseapplication within the first disk image to partially complete the firstinstallation process, which results in the processor knowing theidentity of the database application. The processor the installs thedatabase client within the second disk image, using the identity of thedatabase application that the processor now knows, to entirely completethe second installation process, which results in the processor knowingthe identity of the client. As such, the processor can then complete thefirst installation process, by updating the database application withthe identity of the database client, which the processor now knows.

A user, such as the user responsible for deploying the disk images, maycreate or specify the dependencies using a GUI that the processorprovides. The GUI can provide the user with the ability to indicate howthe software components that the processor is to install on the diskimages are interrelated to one another. For instance, a user may createlines linking two software components as a graphical depiction of theclient-server and/or peer-to-peer interdependence of these components,and then indicate how the components interdepend.

The processor determines installation operations of the first and secondinstallation processes to generate an ordered sequence of theinstallation operations, based on the modeled dependencies (312).Whereas parts 308 and 310 may require a user to assist with the creationof the topology model and the modeling of the dependencies, theprocessor may by comparison perform part 312 without user assistance.Once the processor knows the software components that the processor isto install in each disk image, the processor can retrieve, generate, orotherwise determine the installation operations necessary to install theinstallable binary files corresponding to the software components.

As such, the processor can determine the installation operations of eachinstallation process in part 312. As noted above, the specific case towhich the method 300 relates is that in which the installationoperations are those that the processor can complete withoutinstantiating either disk image of either virtual machine. As such, theprocessor performs the installation operations of each installationprocess prior to instantiating the disk images. The detailed descriptionlater presents an embodiment of the disclosure in which a methodcompletes at least some of the installation operations afterinstantiating either disk of either or both disk images of either orboth virtual machines.

An installation operation is a discrete instruction that the processorperforms, whereas an installation process is a sequence of suchinstallation operations. For example, an installation operation mayspecify that the processor is to create a particular sub-directory, andanother installation operation specify that the processor is to copy afile into this sub-directory. A third installation operation may specifythat the processor is to update the file as the sub-directory nowstores, with a given parameter.

Thereafter, once the processor knows the dependencies among the softwarecomponents, the processor can order these installation operations can beamongst themselves to create or generate an ordered sequence to performthe installation processes. For instance, in the example describedabove, there may be ten installation operations to install theinstallable binary files for the database application within the firstdisk image, and seven installation operations to install the installablebinary files for the database client within the second disk image. Topreserve the dependencies noted, the processor may perform the first sixoperations for the database application, then perform the sevenoperations for the database client, and finally perform the remainingfour operations for the database application.

As such, the processor executes the first and second installationprocesses in an interleaved manner, without instantiating either diskimage, such that the processor performs the installation operations ofthe two installation processes in accordance with the ordered sequence(314). The processor executes the installation operations of the firstinstallation process based on the first installation parameters, toinstall the first installable binary files within the first disk imageof the first virtual machine. The processor executes the installationoperations of the second installation process based on the secondinstallation parameters, to install the second installable binary fileswithin the second disk image of the second virtual machine.

The processor can dismount disk images dismounted from the hostcomputing device, and copy the disk images to one or more (same ordifferent) desired computing devices at which the processor is toinstantiate the disk images (316). The processor then instantiates thedisk images (318). As such, the virtual machines are nowrunning—including the software components that the processor installedon the disk images prior to instantiating the virtual machines. Forinstance, in the example that has been described, the processor mayinstantiate the first disk image on which the processor has installedthe database application on a server computing device. The processor mayinstantiate the second disk image on which the processor has installedthe database client one or more times on each of a number of clientcomputing devices.

FIG. 4 shows a method 400 for installing software components other thanoperating systems into disk images of virtual machines, according toanother embodiment of the disclosure. A processor of a computing devicemay perform the method 400. The method 400, like the method 300,specifically relates to the case of two disk images of two virtualmachines: a first disk image of a first virtual machine, and a seconddisk image of a second virtual machine. Those skilled in the art caneasily extend the method 400 to more than two disk images of two virtualmachines, however.

Furthermore, the method 400 specifically relates to the case in whichthe installable binary files of the software components do requireinstallation parameters that are unknown and that the processor cannotpopulate with values until the processor has instantiated the diskimages, like the method 200. By comparison, the processor in the method300 knows all the installation parameters and can populate them withvalues even before instantiating the disk images. Therefore, the method400 provides for partial installation of the software components priorto instantiating the disk images of the virtual machines.

The processor can mount the first disk image of the first virtualmachine and the second disk image of the second virtual machine into ahost computing device (402), as before. The processor copies into thefirst disk image the first installable binary files for first softwarecomponents that the processor is to install within the first disk image,prior to instantiating the disk images (404). Likewise, the processorcopies into the second disk image the second installable binary filesfor second software components that the processor is to install withinthe second disk image, prior to instantiating the disk images (404).Similarly, the processor copies into the first disk image firstinstallation parameters and first scripts for a first installationprocess that the processor is to perform to install the firstinstallable binary files into the first disk image (406). Likewise, theprocessor copies into the second disk image second installationparameters and second scripts for a second installation process that theprocessor is to perform to install the second installable binary filesinto the second disk image (406).

The first installation parameters can include both offline firstinstallation parameters and online first installation parameters, andthe second installation parameters can include both offline secondinstallation parameters and online second installation parameters. Theoffline first and second installation parameters are installationparameters that the processor knows and can populate with values priorto instantiating the disk image. The online first and secondinstallation parameters are installation parameters that are unknown andthat the processor cannot populate with values prior to instantiatingthe disk image.

The first scripts correspond to the parts of the first installationprocess that the processor performs after instantiating the first diskimage such that the first virtual machine is running. The second scriptscorrespond to the parts of the second installation process that theprocessor performs after instantiating the second disk image such thatthe second virtual machine is running. The first scripts employ theonline first installation parameters, and the second scripts employ theonline second installation parameters. The detailed descriptiondescribes the method 400 in relation to the existence of both onlinefirst and online second installation parameters, and thus to theexistence of both first and second scripts. However, those skilledwithin the art can appreciate that the method 400 also applies to thescenario in which there are just online first or online secondinstallation parameters, such that there are just first or secondscripts.

The processor, like in the method 300, creates a topology model of thefirst and second software components (408). Likewise, the processormodels dependencies between the first and second software componentswithin the topology model (410), as the processor does in the method300. The processor, again as in the method 300, determines installationoperations of the first and second installation processes to generate anordered sequence of the installation operations, based on the modeleddependencies (412). The installation operations of the ordered sequencecan include image instantiation operations to instantiate a disk image,as well as activation script execution operations control when theprocessor execute these scripts.

As noted above, the specific case to which the method 400 relates isthat in which the processor cannot complete some of the installationoperations without instantiating the disk images of the virtualmachines, because the installation parameters include onlineinstallation parameters in addition to offline installation parameters.The installation operations that the processor can complete withoutinstantiating the disk images—because they do not rely upon onlineinstallation parameters—are offline installation operations, which theprocessor performs prior to instantiating the disk images. Theinstallation operations that the processor cannot complete withoutinstantiating the disk images—because they rely upon online installationparameters—are online installation parameters, which the processorperforms after instantiating the disk images.

The processor partially executes the first and second installationprocesses in an interleaved manner, without instantiating either diskimage, such that the processor performs the offline installationoperations of the two installation processes in accordance with theordered sequence (414), similar to in part 314 of the method 300. Thedifference between part 314 and part 414 is that in part 314, theprocessor completely installs the installable binary files, and thus thesoftware components, as a result of the processor completely performingthe installation processes. By comparison, in part 414, the processorjust partially installs the installable binary files, and thus thesoftware components, as a result of the processor just partiallyperforming installation processes. Similar to in part 210 of the method200, the processor can completely perform the installation processes inpart 414, due to the presence of the online first and secondinstallation parameters.

The processor can then dismount the disk images from the host computingdevice, and copy them to one or more (same or different) desiredcomputing devices at which the processor is to instantiate the diskimages (416), like in the method 300. The processor 400 instantiates thedisk images (418), like it does in the method 300. As such, the virtualmachines are now running. However, unlike in the method 300, thesoftware components are not yet running, because the processor did notcompletely perform the installation processes in part 414.

Rather, once the processor has booted the virtual machines, theprocessor executes the scripts that the processor previously copied tothe disk images, based on the online first and second installationparameters, to complete the installation processes (420). Running of thevirtual machines results in the online first and second installationparameters taking on values. Therefore, the processor can complete theinstallation processes, because the processor now knows these onlineinstallation parameters, and thus can populate them with values.Desirably, the processor performs in part 420 just the parts of thefirst and second installation processes that the processor cannotcomplete without instantiating the disk images, whereas in part 414 theprocessor performs the parts of these installation process that theprocessor can complete prior to instantiating the disk imagesinstantiation.

Computer-readable code can implement the methods 100, 200, 300, and 400that the detailed description has presented. A computer-readable storagemedium can embody the computer-readable code. As such a processor of thehost computing device, or of another type of device, can thus executethe computer-readable code, to install one or more disk images of one ormore virtual machines.

The processor can perform the embodiments of the methods 100, 200, 300,and 40 together. For instance, the processor can create a topology modeland model containments and dependencies within the method 100 or themethod 200, as well as within the methods 300 and 400. As to the method100, the topology model ultimately includes a modeling of theinstallable binary files corresponding to the software components andthe ordering of installation operations to install the installablebinary files, as to just one disk image of just one virtual machine. Bycomparison, as to the method 200, the topology model ultimately includesthe same type of modeling and ordering, but in relation to more than onedisk image of more than one virtual machine.

As such, whereas the methods 300 and 400 specifically call out creatingthe topology model and modeling dependencies, and whereas the methods100 and 200 specifically call out receiving the installable binary filesand the installation parameters (and the scripts), these processes areinterchangeable. That is, the processor in the methods 100 and 200 cancreate a topology model and model dependencies, and the processor in themethods 300 and 400 can receive the installable binary files and theinstallation parameters (and the scripts).

FIG. 5 shows an example scenario of a topology model in relation to twodisk images 502 and 504, according to an embodiment of the disclosure.The disk image 502 includes software components 506, 508, and 510. Thesoftware component 510 contains the software component 508 within thedisk image 502. The disk image 504 includes software component 512.

Arrows in FIG. 5 indicate dependencies among the software components506, 508, 510, and 512. As such, the software component 508 depends uponthe software component 506 within the disk image 502. Furthermore, thesoftware components 506 and 510 of the disk image 502 each depend on thesoftware component 512 of the disk image 504.

Therefore, an ordered sequence of installation operations may includethe following for the software components 506, 508, 510, and 512. First,a processor may perform the installation operations to install thesoftware component 512. Next, the processor may perform the installationoperations to install the software component 506, since the softwarecomponent 506 depends on the software component 512. The processor maythen perform the installation operations to install the softwarecomponent 508, because the software component 508 depends on thesoftware component 506. Finally, the processor may perform theinstallation operations to install the software component 510, becausethe software component 510 contains the software component 508 anddepends on the software component 512.

FIG. 6 shows a system 600, according to an embodiment of the disclosure.The system 600 includes a host computing device 602. The host computingdevice 602 includes a processor 604 and a computer-readable data storagemedium 606. Examples of computer-readable data storage media includemagnetic, optical, semiconductor, volatile, and/or non-volatile media,among other types of media.

The computer-readable data storage medium 606 stores an installationengine 608, an activation engine 610, and a modeling engine 612. Thecomputer-readable data storage medium 606 also stores one or more diskimages 614 of virtual machines and one or more installable binary files616 corresponding to software components. The engines 608, 610, and 612can each be or include computer-readable code that the processor 604executes to perform particular functionality in relation to the diskimages 614 and the installable binary files 616, some of which resultsin the processor 604 copying the installable binary files 616 into thedisk images 614.

For instance, the installation engine 608 may perform parts 104, 106,and 108 of the method 100; parts 204, 206, 208, and 210 of the method200; parts 304, 306, and 314 of the method 300; and, parts 404, 406, and414 of the method 400. The activation engine 610 may perform part 216 ofthe method 200 and part 420 of the method 400. In this respect, theinstallation engine 608 copies the activation engine 610 into the diskimages 614 so that the activation engine 610 can execute the scripts asin parts 216 and 420. The modeling engine 612 may perform parts 308,310, and 312 of the method 300, and parts 408, 410, and 412 of themethod 400.

The system 600 may also include one or more target computing devices618A, 618B, . . . , 618N, which are collectively referred to as thetarget computing devices 618. A network 620 communicatively connects thehost computing device 602 to the target computing devices 618. Thenetwork 620 can be or include intranets, extranets, the Internet,local-area networks, wide-area networks, wired networks, wirelessnetworks, and/or telephony networks, among other types of networks.

Once the processor 604 has suitably prepared the disk images 614 at thehost computing device 602 for deployment, the processor 604 can copy ormove the disk images 614 to the target computing devices 618. Theprocessor 604 may instantiate the disk images 614 of the virtualmachines at the target computing devices 618. Instantiation of the diskimages 614 at the target computing devices 618 results in the virtualmachines running on the target computing devices 618.

Those of ordinary skill within the art can appreciate that a system,method, or computer program product may embody aspects of the presentdisclosure. Accordingly, aspects of the embodiments of the disclosuremay take the form of an entirely hardware embodiment, an entirelysoftware embodiment (including firmware, resident software, micro-code,etc.) or an embodiment combining software and hardware aspects that mayall generally be referred to herein as a “circuit,” “module” or“system.” Furthermore, aspects of the present disclosure may take theform of a computer program product that one or more computer readablemedium(s) embody. The computer readable medium(s) may embody computerreadable program code.

Those of ordinary skill within the art can utilize any combination ofone or more computer readable medium(s). The computer readable mediummay be a computer readable signal medium or a computer readable storagemedium. A computer readable storage medium may be, for example, but notlimited to, an electronic, magnetic, optical, electromagnetic, infrared,or semiconductor system, apparatus, or device, or any suitablecombination of the foregoing. More specific examples (a non-exhaustivelist) of the computer readable storage medium include the following: anelectrical connection having one or more wires, a portable computerdiskette, a hard disk, a random access memory (RAM), a read-only memory(ROM), an erasable programmable read-only memory (EPROM or Flashmemory), an optical fiber, a portable compact disc read-only memory(CD-ROM), an optical storage device, a magnetic storage device, or anysuitable combination of the foregoing. In the context of this document,a computer readable storage medium may be any tangible medium that cancontain, or store a program for use by or in connection with aninstruction execution system, apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device. An appropriatemedium may transmit program code embodied on a computer readable medium.Such appropriate media include but are not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

In general, a computer program product includes a computer-readablemedium on which one or more computer programs are stored. One or moreprocessor of one or more hardware devices execute the computer programsfrom the computer-readable medium to perform a method. For instance, theprocessors may perform one or more of the methods that have beendescribed above.

The computer programs themselves include computer program code. Those ofordinary skill within the art may write computer program code forcarrying out operations for aspects of the present disclosure in anycombination of one or more programming languages, including an objectoriented programming language such as Java, Smalltalk, C++ or the likeand conventional procedural programming languages, such as the “C”programming language or similar programming languages. The program codemay execute entirely on the user's computer, partly on the user'scomputer, as a stand-alone software package, partly on the user'scomputer and partly on a remote computer or entirely on the remotecomputer or server. In the latter scenario, any type of network mayconnect the remote computer to the user's computer. Such networksinclude a local area network (LAN) or a wide area network (WAN), or aconnection may to an external computer (for example, through theInternet using an Internet Service Provider).

The detailed description has presented aspects of the present disclosurewith reference to flowchart illustrations and/or block diagrams ofmethods, apparatus (systems) and computer program products according toembodiments of the disclosure. Those of ordinary skill within the artcan understand that computer program instructions can implement eachblock of the flowchart illustrations and/or block diagrams, andcombinations of blocks in the flowchart illustrations and/or blockdiagrams. Providing these instructions to a processor of a generalpurpose computer, special purpose computer, or other programmable dataprocessing apparatus to produce a machine, can result in execution ofthe instructions via the processor of the computer or other programmabledata processing apparatus, to create means for implementing thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

A computer readable medium may also store these instruction to direct acomputer, other programmable data processing apparatus, or other devicesto function in a particular manner, such that the instructions stored inthe computer readable medium produce an article of manufacture includinginstructions which implement the function/act specified in the flowchartand/or block diagram block or blocks.

Those of ordinary skill within the art may also load the computerprogram instructions onto a computer, other programmable data processingapparatus, or other devices to cause the computer, other programmableapparatus or other devices, to perform a series of operational steps.The result is a computer implemented process such that the instructionsthat execute on the computer or other programmable apparatus provideprocesses for implementing the functions/acts specified in the flowchartand/or block diagram block or blocks.

The flowchart and block diagrams in the figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present disclosure. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, execution of two blocks shownin succession may, in fact, occur substantially concurrently, orsometimes in the reverse order, depending upon the functionalityinvolved. Special purpose hardware-based systems that perform specifiedfunctions or acts, or combinations of special purpose hardware andcomputer instructions, can implement each block of the block diagramsand/or flowchart illustration, and combinations of blocks in the blockdiagrams and/or flowchart illustration.

Although the detailed description has presented specific embodiments,those of ordinary skill in the art can appreciate that they cansubstitute any arrangement calculated to achieve the same purpose forthe specific embodiments shown. This application thus covers anyadaptations or variations of embodiments of the present disclosure. Assuch and therefore, only the claims and equivalents thereof limit thisdisclosure.

1. (canceled)
 2. (canceled)
 3. (canceled)
 4. (canceled)
 5. (canceled) 6.(canceled)
 7. (canceled)
 8. (canceled)
 9. (canceled)
 10. (canceled) 11.A computer program product comprising: a computer-readable storagemedium having computer-readable code embodied therein, thecomputer-readable code executable by a processor to install one or morefirst software components of a first disk image of a first virtualmachine and to install one or more second software components of asecond disk image of a second virtual machine, the computer-readablecode comprising: first computer-readable code to permit a topology modelof the first software components and of the more second softwarecomponents to be created, the topology model including dependenciesbetween the first software components and the second softwarecomponents; second computer-readable code to generate an orderedsequence of installation operations based on the dependencies betweenthe first software components and the second software components; thirdcomputer-readable code to at least partially install the first diskimage of the first virtual machine and the second disk image of thesecond virtual machine in an interleaved manner by executing at leastsome of the installation operations in the ordered sequence, withoutinstantiating the first disk image of the first virtual machine andwithout instantiating the second disk image of the second virtualmachine.
 12. The computer program product of claim 10, wherein thecomputer-readable code further comprises: fourth computer-readable codeto determine one or more first installation operations of theinstallation operations that can be completed without instantiating thefirst disk image of the first virtual machine and without instantiatingthe second disk image of the second virtual machine, such that thefourth computer-readable code is to execute the first installationoperations to partially install the first disk image of the firstvirtual machine and the second disk image of the second virtual machine;fifth computer-readable code to determine one or more secondinstallation operations of the installation operations that cannot becompleted without instantiating the first disk image of the firstvirtual machine and without instantiating the second disk image of thesecond virtual machine; sixth computer-readable code to install one ormore first scripts within the first disk image of the first virtualmachine and to install one or more second scripts within the second diskimage of the second virtual machine, the first scripts to perform thesecond installation operations pertaining to the first softwarecomponents upon instantiation of the first disk image of the firstvirtual machine, the second scripts to perform the second installationoperations pertaining to the second software components uponinstantiation of the second disk image of the second virtual machine.13. The computer program product of claim 10, wherein the firstcomputer-readable code is to permit the topology model to be created by:permitting a user to select within a first graphical user interface(GUI) the first disk image of the first virtual machine, the second diskimage of the second virtual machine, the first software components ofthe first disk image of the first virtual machine, and the softwarecomponents of the second disk image of the second virtual machine; and,permitting the user to create the dependencies within a second GUI. 14.A computer program product comprising: a computer-readable storagemedium having computer-readable code embodied therein, thecomputer-readable code executable by a processor to install a disk imageof a virtual machine, the computer-readable code comprising: firstcomputer-readable code to perform an offline installation process of thedisk image of the virtual machine in which a first part of installationof the disk image of the virtual machine is performed withoutinstantiating the disk image of the virtual machine, such that thevirtual machine is not running; and, second computer-readable code toperform an online installation process of the disk image of the virtualmachine in which a remaining part of the installation of the disk imageof the virtual machine is performed upon the disk image of the virtualmachine having been instantiated.
 15. The computer program product ofclaim 14, wherein the offline installation process comprises: mountingthe disk image of the virtual image without instantiating the disk imageof the virtual machine; copying one or more installable binary filesinto the disk image of the virtual machine; copying one or more firstinstallation parameters into the disk image of the virtual machine, thefirst installation parameters for the first part of the installation ofthe disk image of the virtual machine, the first installation parameterspopulated with values without the disk image of the virtual machinehaving to be instantiated; copying one or more second installationparameters into the disk image of the virtual machine, the secondinstallation parameters for the remaining part of the installation ofthe disk image of the virtual machine, the second installationparameters populated with values upon the disk image of the virtualmachine having been instantiated; copying one or more scripts into thedisk image of the virtual machine, the scripts executed after the diskimage of the virtual machine has been instantiated; performing the firstpart of the installation of the disk image of the virtual machine, basedon the first installation parameters, to install the installable binaryfiles within the disk image of the virtual machine without instantiatingthe disk image of the virtual machine.
 16. The computer program productof claim 15, wherein the online installation process comprises, upon thedisk image of the virtual machine having been instantiated: executingthe scripts, based on the second installation parameters that have nowbeen populated with values, to perform the remaining part of theinstallation of the disk image of the virtual machine.
 17. A systemcomprising: a processor; a computer-readable data storage medium tostore a disk image of a virtual machine; an installation engineimplemented at least by the processor to copy one or more installablebinary files of one or more software components into the disk image, tocopy one or more installation parameters into the disk image, and to atleast partially execute an installation process based on theinstallation parameters to install the installable binary files withinthe disk image, without instantiating the disk image.
 18. The system ofclaim 17, wherein the installation parameters are first installationparameters that are populated with values without the disk image havingto be instantiated, wherein the installation engine is further to copyone or more second installation parameters into the disk image, and tocopy one or more scripts into the disk image, wherein the secondinstallation parameters populated with values upon the disk image of thevirtual machine having been instantiated, and wherein the system furthercomprises an activation engine copied by the installation engine intothe disk image, the activation engine to after instantiation of thevirtual machine execute the scripts, based on the second installationparameters that have now been populated with values, to complete theinstallation process.
 19. The system of claim 17, wherein the disk imageof the virtual machine is a first disk image of a first virtual machine,the installable binary files are first installable binary files, theinstallation parameters are first installation parameters, and theinstallation process is a first installation process, wherein thecomputer-readable data storage medium is further to store a second diskimage of a second virtual machine, and wherein the installation engineis further to copy one or more second installable binary files into thesecond disk image, to copy one or more second installation parametersinto the second disk image, and is to at least partially execute asecond installation process based on the second installation parametersto install the second installable binary files within the disk image,without instantiating the second disk image.
 20. The system of claim 19,further comprising a modeling engine implemented at least by theprocessor to: permit creation of a topology model of one or more firstsoftware components corresponding to the first installable binary filesand of one or more second software components corresponding to thesecond installable binary files, permit modeling of dependencies betweenthe first software components and the second software components of thetopology, and determine installation operations of the firstinstallation process and of the second installation process to generatean ordered sequence of the installation operations based on thedependencies.